package C031;

/**
 * ClassName: Code05_ReverseBits
 * Package: C031
 * Description:
 *
 * @Author BCXJ
 * @Create 2024/12/27 17:16
 * @Version 1.0
 * @Since 1.0
 */
public class Code05_ReverseBits {
    public static void main(String[] args) {
        System.out.println(reverseBits(0x01000000));
    }

    public static int reverseBits(int n) {
        n = ((n & 0xaaaaaaaa) >>> 1) | ((n & 0x55555555) << 1);
        n = ((n & 0xcccccccc) >>> 2) | ((n & 0x33333333) << 2);
        n = ((n & 0xf0f0f0f0) >>> 4) | ((n & 0x0f0f0f0f) << 4);
        n = ((n & 0xff00ff00) >>> 8) | ((n & 0x00ff00ff) << 8);
        return (n >>> 16) | (n << 16);
    }
}
